package com.zee.animal

import android.animation.AnimatorSet
import android.animation.ObjectAnimator
import android.animation.PropertyValuesHolder
import android.graphics.Color
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.text.SpannableStringBuilder
import android.view.View
import android.view.animation.Animation
import android.view.animation.Animation.AnimationListener
import android.view.animation.AnimationUtils
import com.github.spanutils.SpanBuild
import com.zee.dialog.BindViewAdapter
import com.zee.dialog.MyDialog
import com.zee.utils.UIUtils
import com.zee.utils.ZLibrary
import com.zee.utils.ZScreenUtils
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        ZLibrary.init(application, true)
        setContentView(R.layout.activity_main)
        tv_a.setOnClickListener {
            dialogShow()
        }

        val spanBuild = SpanBuild.get("例子：")
                .append("粗体\n").setTextIsBold()	//设置文字为粗体

                .append("斜体\n").setTextIsItalic()	//设置文字为斜体

                .append("URL链接(可以点击)\n")
//(最后的build方法需要传入设置该spannable效果的TextView，否则点击无效)
                .setUrl("http://www.baidu.com")		//设置点击跳转的页面地址
                .setUnderLine(true)      		//显示下划线,true:显示,false:不显示,不调用方法不显示下划线

                .append("粗斜体\n")
                .setTextIsBoldItalic()			//粗体+斜体

                .append("字体大小25px\n")
                .setTextSize(25)			//设置文字大小，false:单位px,true：单位dp,默认px

                .append("URL链接(黑色)(可以点击)\n")
                .setUnderLine()				//显示下划线
//(最后的build方法需要传入设置该spannable效果的TextView，否则点击无效)
                .setUrl("http://www.baidu.com")		//设置点击跳转的页面地址
                .setTextColor(Color.BLACK)		//url文字颜色

                .append("字体大小15dp\n")
                .setTextSize(15, true)			//设置文字大小，false:单位px,true：单位dp

                .append("URL链接(红色)无下划线(可以点击)\n")
//(最后的build方法需要传入设置该spannable效果的TextView，否则点击无效)
                .setUrl("http://www.baidu.com")
                .setTextColor(Color.RED)
                .setUnderLine(false)

                .append("字体颜色蓝色\n")
                .setTextColor(Color.BLUE)

                .append("背景黄色\n")
                .setBgColor(Color.YELLOW)		//设置文字所在区域背景色

                .append("下划线+换行效果(文字前面有点)")
                .setUnderLine()
                .setNewlinePoint(2,Color.GRAY,10)	//如果该文字是在换行之后的开头位置，会显示一个点
                //连续设置多个setNewlinePoint方法就显示多个点
                //第一个参数：文字与点的距离，第二个参数：点的颜色，第三个参数：点的半径
                //26还是28版本以下，设置半径不生效
                .append("相对前面字体大小的0.5f\n")
                .setRelativeTextSizeScale(0.5f)		//文字大小设置为前面字体大小的0.5倍

                .append("中间删除线\n")
                .setCenterLine()			//文字显示删除线

                .append("相对前面字体大小的1.5f\n")
                .setRelativeTextSizeScale(1.5f)		//文字大小设置为前面字体大小的1.5倍

                .append("中间线+下划线\n")
                .setCenterLine().setUnderLine()		//删除线+下划线

                .append("文字偏上显示")
                .setTextShowTop()			//文字偏上显示

                .append("中间位置")

                .append("文字偏下显示\n")
                .setTextShowBottom()			//文字偏下显示

                .append("换行效果(文字前面有竖线)\n")
                .setQuoteColor(Color.RED)		//竖线颜色
                .setQuoteGapWidth(10)			//竖线距离文字距离
                .setQuoteStripeWidth(20)		//竖线宽度
                .setLineMarginCurrent(30)		//换行后的离左边的距离


                .append("设置点击(可以点击)\n")
                .setTextIsBold()
                .setTextColor(Color.BLUE)
                .setUnderLine(false)
//设置点击事件(最后的build方法需要传入设置该spannable效果的TextView，否则点击无效)

                .setTextColor(Color.RED)		//某个append节点中，后设置的属性覆盖前面的属性
                .setUnderLine(true)			//某个append节点中，后设置的属性覆盖前面的属性
                .setTextIsItalic()			//某个append节点中，后设置的属性覆盖前面的属性

                .append("BlurOuter\n")
                .setBlurOuter()				//模糊效果

                .append("BlurInner\n")
                .setBlurInner()				//模糊效果

                .append("BlurSolid\n")
                .setBlurSolid()				//模糊效果

                .append("X伸缩1.5f\n")
                .setScaleXSize(1.5f)			//设置文字X方向拉伸倍数

                .append("X伸缩0.5f\n")
                .setScaleXSize(0.5f)			//设置文字X方向拉伸倍数

                .append("serif字体\n")
                .setTextFamily("serif")			//设置字体样式，String或者Typeface，同时设置，Typeface优先级更高

                .append("原始大小图片")


//如果需要点击事件或者URL(设置了并需要点击效果)，需要在build方法传入该TextView
        val ssb =spanBuild.build(tv_a);

        tv_a.setText(ssb);


//        val animal = moveX(tv_a, 80f, 0f)
//        val animalB = moveY(tv_a, 80f, 0f)
//        val animSet = AnimatorSet()
//        animSet.playTogether(animal, animalB)
//        animSet.start()
    }


    fun dialogShow() {
//        PromptDialog.getInstance(-1).show(supportFragmentManager, "")


        MyDialog.init(object : BindViewAdapter(R.layout.dialog_main) {
            override fun initViews(paView: View) {

                // DialogFragment 目前我只发现用如下方法在此事件中可以实现弹出时的动画
                val anim = AnimationUtils.loadAnimation(context, R.anim.base_dialog_in)
                anim.setAnimationListener(object :AnimationListener {
                    override fun onAnimationStart(animation: Animation?) {
                    }

                    override fun onAnimationEnd(animation: Animation?) {
                    }

                    override fun onAnimationRepeat(animation: Animation?) {
                    }

                })
                paView.startAnimation(anim)
            }
        }).setSize(UIUtils.pxToDp(ZScreenUtils.getScreenWidth()), UIUtils.pxToDp(ZScreenUtils.getScreenHeight())).show()


    }

    private fun moveX(imageView: View, star: Float, end: Float): ObjectAnimator {
        val anim6 = PropertyValuesHolder.ofFloat("translationX", star, end, star)
        val animator = ObjectAnimator.ofPropertyValuesHolder(imageView, anim6).setDuration(2000)
        animator.repeatCount = -1
        return animator
    }

    private fun moveY(imageView: View, star: Float, end: Float): ObjectAnimator {
        val anim6 = PropertyValuesHolder.ofFloat("translationY", star, end, star)
        val animator = ObjectAnimator.ofPropertyValuesHolder(imageView, anim6).setDuration(2000)
        animator.repeatCount = -1
        return animator
    }
}